/*
 * Copyright (c) 2024. hallele, Inc All rights reserved.
 */

package cn.hallele.ms.usercenter.domain.action.user;

import cn.hallele.infrastructure.metadata.io.Page;
import cn.hallele.ms.usercenter.domain.das.UserDDDas;
import cn.hallele.ms.usercenter.domain.das.UserDEDas;
import cn.hallele.ms.usercenter.domain.domain.UserDomain;
import cn.hallele.ms.usercenter.domain.domain.UserQueryDomain;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * hallele_ms_usercenter
 *
 * @author anle5
 * @since 2024/10/5 16:20
 */
@Slf4j
@Service
public class UserDomainService {
    @Autowired
    private UserDEDas userDEDas;

    @Autowired
    private UserDDDas userDDDas;

    /**
     * 条件分页查询用户
     *
     * @param condition 查询条件
     * @return 用户
     */
    public Page<UserDomain> listUser(UserQueryDomain condition) {
        return userDEDas.listUser(condition);
    }

    /**
     * 获取用户信息
     *
     * @param username 用户名
     * @return 用户信息
     */
    public UserDomain getUser(String username) {
        return userDEDas.getUser(username);
    }

    /**
     * 通过id查询用户
     *
     * @param ids id集合
     * @return 用户信息
     */
    public List<UserDomain> findByIdIn(List<Long> ids) {
        return userDEDas.findByIdIn(ids);
    }

    /**
     * 通过id查询用户
     *
     * @param id id
     * @return 用户信息
     */
    public UserDomain findById(Long id) {
        return userDEDas.findById(id);
    }

    /**
     * 添加用户
     *
     * @param userDomain 用户信息
     */
    public void addUser(UserDomain userDomain) {
        userDEDas.addUser(userDomain);
    }

    /**
     * 修改用户
     *
     * @param userDomain 用户
     * @return 修改后的用户信息
     */
    public UserDomain updateUser(UserDomain userDomain) {
        return userDEDas.updateUser(userDomain);
    }

    /**
     * 删除用户
     *
     * @param username 用户名
     */
    public void deleteUser(String username) {
        userDEDas.deleteUser(username);
    }

    /**
     * 获取用户头像
     *
     * @param username 用户名
     * @return 用户头像
     */
    public String getAvatar(String username) {
        UserDomain user = userDEDas.getUser(username);
        Long avatarId = user.getAvatarId();
        return userDDDas.getAvatar(avatarId);
    }
}
